MongoDB Enterprise Advancedをインストールする
こんにちは、菊池です。
MongoDBには、商用ライセンスであるMongoDB Enterprise Advancedがあります。今回、Enterprise Advancedを利用する機会がありましたので、商用版のみに提供される機能を、何回かに分けて紹介します。本エントリでは、最初のステップであるインストールの手順を紹介します。
MongoDB Enterprise Advanced
MongoDB Enterprise Advancedでは、コミュニティ版にはない以下のような機能・サービスが提供されます。
- Advanced Security
- LDAP/Kerberos認証
- 監査
- 暗号化ストレージ
- Management
- Ops Manager
- SNMPサポート
- In-Memory Speed
- In-Memory ストレージエンジン
- Intuitive GUI
- MongoDB Compass
- Advanced Analytics
- MongoDB Connector for BI
- Proactive Support
- 24時間365日のサポート
- 緊急パッチの提供
- オンデマンドトレーニング
各機能・サービスの詳細は公式ドキュメントを参照ください。今後のエントリでも各機能を紹介していきたいと思います。
インストール手順
それでは、MongoDB Enterpriseをインストールしていきます。各プラットフォームに合わせた手順が、公式ドキュメントで参照できます。
今回はCentOS7にインストールしてみました。
リポジトリファイルの作成
MongoDB Enterpriseはyumでインストールが可能です。/etc/yum.repos.d/mongodb-enterprise.repo
にリポジトリファイルを作成します。
[mongodb-enterprise] name=MongoDB Enterprise Repository baseurl=https://repo.mongodb.com/yum/redhat/$releasever/mongodb-enterprise/3.4/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
インストールと接続
続いてインストールです。MongoDB Enterpriseには以下のパッケージが存在します。
- mongodb-enterprise:以下の全てのパッケージが含まれます
- mongodb-enterprise-server:MongoDBのサーバであるmongodデーモン
- mongodb-enterprise-mongos:シャーディング時に必要となるルータ
- mongodb-enterprise-shell:MongoDBのシェル
- mongodb-enterprise-tools:ダンプ、エクスポート/インポート、ステータスの取得などを行う各種運用ツール
mongodb-enterpriseをインストールすれば、全てのパッケージがインストールされます。
$ sudo yum install -y mongodb-enterprise
必要なパッケージのみでよい場合には、個別にインストールしましょう。
$ sudo yum install -y mongodb-enterprise-server mongodb-enterprise-shell mongodb-enterprise-tools
インストールができたらmongodを起動します。
$ sudo systemctl start mongod
mongoシェルで接続してみましょう。
$ mongo MongoDB shell version v3.4.6 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.6 Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user Server has startup warnings: 2017-07-20T10:05:04.939+0900 I CONTROL [initandlisten] 2017-07-20T10:05:04.939+0900 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 2017-07-20T10:05:04.939+0900 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. 2017-07-20T10:05:04.939+0900 I CONTROL [initandlisten] 2017-07-20T10:05:04.939+0900 I CONTROL [initandlisten] 2017-07-20T10:05:04.939+0900 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 2017-07-20T10:05:04.939+0900 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2017-07-20T10:05:04.939+0900 I CONTROL [initandlisten] 2017-07-20T10:05:04.939+0900 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 2017-07-20T10:05:04.939+0900 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2017-07-20T10:05:04.939+0900 I CONTROL [initandlisten] MongoDB Enterprise >
接続できました。いくつか警告メッセージが出ていますので、次の手順で対応します。
Transparent Huge Pagesの無効化
Transparent Huge Pages(THP)はLinuxのメモリ管理の仕組みで、大容量のメモリに対しTranslation Lookaside Buffer(TLB)ルックアップのオーバーヘッドを削減する効果があります。しかし、DBのような不連続なメモリアクセスパターンではTHPによりパーフォーマンスが低下することもあるため、MongoDBでは無効化することが推奨されています。
Disable Transparent Huge Pages (THP)
上記リンクの手順にしたがって、THPを無効化します。
起動時にTHPを無効化するスクリプトを/etc/init.d/disable-transparent-hugepages
に作成します。
#!/bin/bash ### BEGIN INIT INFO # Provides: disable-transparent-hugepages # Required-Start: $local_fs # Required-Stop: # X-Start-Before: mongod mongodb-mms-automation-agent # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Disable Linux transparent huge pages # Description: Disable Linux transparent huge pages, to improve # database performance. ### END INIT INFO case $1 in start) if [ -d /sys/kernel/mm/transparent_hugepage ]; then thp_path=/sys/kernel/mm/transparent_hugepage elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then thp_path=/sys/kernel/mm/redhat_transparent_hugepage else return 0 fi echo 'never' > ${thp_path}/enabled echo 'never' > ${thp_path}/defrag re='^[0-1]+$' if [[ $(cat ${thp_path}/khugepaged/defrag) =~ $re ]] then # RHEL 7 echo 0 > ${thp_path}/khugepaged/defrag else # RHEL 6 echo 'no' > ${thp_path}/khugepaged/defrag fi unset re unset thp_path ;; esac
実行権限をつけ、起動時の実行を有効化します。
$ sudo chkconfig --add disable-transparent-hugepages $ sudo reboot
OSをリブート後、以下の2つでいずれもnever
が選択されていればOKです。
$ cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never] $ cat /sys/kernel/mm/transparent_hugepage/defrag always madvise [never]
mongoシェルで接続します。
$ mongo MongoDB shell version v3.4.6 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.6 Server has startup warnings: 2017-07-20T10:23:20.117+0900 I CONTROL [initandlisten] 2017-07-20T10:23:20.117+0900 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 2017-07-20T10:23:20.117+0900 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. 2017-07-20T10:23:20.117+0900 I CONTROL [initandlisten] MongoDB Enterprise >
THPの警告が出なくなりました。Access controlについては今後の設定の中で解消していきたいと思います。
まとめ
MongoDBの商用プロダクト、MongoDB Enterprise Advancedの導入ということで、まずはインストールから起動、接続の手順を紹介しました。
商用版でも、リポジトリ/バイナリが異なるだけで、基本的にはコミュニティ版と同様の手順で導入が可能です。今後、Enterprise Advanced独自の機能についても紹介していきます。